The present invention relates generally to computer systems and more specifically to a system for delaying storage of certain information when making procedure calls.
Logic programming languages such as PROLOG, because of a method of execution known as backtracking, must save the current machine state many times. This is because such programs execute by searching all alternatives when making procedure calls. When new alternatives are checked, the current machine state must be saved so that it can be restored if that particular search is not successful, ie., does not return a match, so that the search can be continued with another clause.
The fact that PROLOG-type languages make an extremely high number of non-deterministic procedure calls is an important contributor to the low performance typically achieved by PROLOG programs. It would be desirable for a PROLOG program to decrease the time and effort required to save the machine state when making a non-deterministic procedure call.
It is therefore an object of the present invention to improve performance of the execution of PROLOG-type languages by decreasing the system time used to make procedure calls.
Therefore, according to the present invention, the machine state is not saved when a procedure call is made. In some instances, portions of the information which are saved to define the machine state can be discarded. When saving of the machine state is delayed, encountering a situation which would delete that saved information means that it need not be saved at all. This improves overall system performance.
The novel features which characterize the present invention are defined by the appended claims. The foregoing and other objects and advantages of the present invention will hereafter appear, and for purposes of illustration, but not of limitation, a preferred embodiment is shown in the accompanying drawings.